HTMLify
4. Median of Two Sorted Arrays.java
Views: 1 | Author: cody
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | // 4. Median of Two Sorted Arrays java solution class Solution { public double findMedianSortedArrays(int[] nums1, int[] nums2) { int m = nums1.length; int n = nums2.length; if (m > n) { return findMedianSortedArrays(nums2, nums1); } int left = 0, right = m, halfLen = (m + n + 1) / 2; while (left <= right) { int partitionX = (left + right) / 2; int partitionY = halfLen - partitionX; int maxX = (partitionX == 0) ? Integer.MIN_VALUE : nums1[partitionX - 1]; int minX = (partitionX == m) ? Integer.MAX_VALUE : nums1[partitionX]; int maxY = (partitionY == 0) ? Integer.MIN_VALUE : nums2[partitionY - 1]; int minY = (partitionY == n) ? Integer.MAX_VALUE : nums2[partitionY]; if (maxX <= minY && maxY <= minX) { if ((m + n) % 2 == 0) { return (double) (Math.max(maxX, maxY) + Math.min(minX, minY)) / 2; } else { return (double) Math.max(maxX, maxY); } } else if (maxX > minY) { right = partitionX - 1; } else { left = partitionX + 1; } } return -1.00; } } |